package it.azienda.stampe.view;

import it.azienda.framework.utilita.Utilita;
import it.azienda.framework.view.Dettaglio;
import it.azienda.managerworkstandard.modello.BeanFornitore;
import it.azienda.managerworkstandard.modello.BeanProdotto;
import it.azienda.stampe.parametri.BeanStampaInventario;
import java.util.HashMap;
import javax.faces.application.FacesMessage;
import javax.faces.component.html.HtmlForm;
import javax.faces.component.html.HtmlInputText;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;

public class DettaglioStampaInventario extends Dettaglio {
    private HtmlForm form = new HtmlForm();
    private BeanStampaInventario beanStampaInventario;
    
    public void setBeanStampaInventario(BeanStampaInventario beanStampaInventario) {
        setObj(beanStampaInventario);
        this.beanStampaInventario = beanStampaInventario;
    }
    
    public BeanStampaInventario getBeanStampaInventario(){
        return (BeanStampaInventario)getObj();
    }
    
    public HtmlForm getForm() {
        form = (HtmlForm) Utilita.getSession().getAttribute("form");
        if (form == null) {
            form = new HtmlForm();
        }
        FacesContext ctx = FacesContext.getCurrentInstance();
        beanStampaInventario =(BeanStampaInventario) ctx.getExternalContext().getRequestMap().get("beanStampaInventario");
        controlloDopoSalvataggio(beanStampaInventario);
        Utilita.getSession().removeAttribute("form");
        return form;
    }
    
    public void setForm(HtmlForm form) {
        setFormObject(form);
        this.form = form;
        Utilita.getSession().setAttribute("form",form);
    }
    
    public void controlloDopoSalvataggio(Object obj) {
        BeanStampaInventario stampaInventario=(BeanStampaInventario)obj;
        if(stampaInventario.getBeanFornitore()==null){
            stampaInventario.setBeanFornitore(new BeanFornitore());
        }
        if(stampaInventario.getBeanProdotto()==null){
            stampaInventario.setBeanProdotto(new BeanProdotto());
        }
    }
    
    public void stampaJasper() {
        FacesContext ctx = FacesContext.getCurrentInstance();
        BeanStampaInventario beanStampa = (BeanStampaInventario) ctx.getApplication().getVariableResolver().resolveVariable(ctx,"beanStampaInventario");
        try{
            
            String queryNuova = " select prodotti.id, prodotti.codice, prodotti.descrizione from prodotti";
            boolean verifica= false;
            /*
            if(beanStampa.getIdFornitore() != null){
                queryNuova+=" ,prodottiDett where prodottiDett.fornitore_id  = "+beanStampa.getIdFornitore().toString();
                verifica=true;
            }
             
            if(beanStampa.getCodiceDa() != null && beanStampa.getCodiceA() != null){
                if(beanStampa.getCodiceDa().length() >= 1 && beanStampa.getCodiceA().length() >= 1){
                    if(verifica){
                        queryNuova+=" and ";
                    }else{
                        queryNuova+=" ,prodottiDett where ";
                    }
                    queryNuova+=" prodottiDett.codice between "+beanStampa.getCodiceDa()+" and "+beanStampa.getCodiceA();
                    verifica=true;
                }
            }
             
            if(beanStampa.getIdProdotto() != null){
                if(verifica){
                    queryNuova+=" and ";
                }else{
                    queryNuova+=" ,prodottiDett where ";
                }
                queryNuova+=" prodottiDett.prodotto_id  = "+beanStampa.getIdProdotto().toString();
                verifica=true;
            }
             
            if(verifica){
                queryNuova+=" and prodottiDett.prodotto_id = prodotti.id";
            }else{
                queryNuova+=" ,prodottiDett where prodottiDett.prodotto_id = prodotti.id";
            }
             
            queryNuova+=" group by prodotti.id, prodotti.codice, prodotti.descrizione" +
                    " order by prodotti.descrizione,  prodotti.codice";
             
            beanStampa.setQueryNuova(queryNuova);
             */
            if(beanStampa.getIdProdotto() != null){                
                queryNuova+=" where  prodotti.id  = "+beanStampa.getIdProdotto().toString();
                queryNuova+=" group by prodotti.id, prodotti.codice, prodotti.descrizione" +
                        " order by prodotti.descrizione,  prodotti.codice";
                
                beanStampa.setQueryNuova(queryNuova);
            }
            super.setBeanStampa(beanStampa);
            super.stampaJasper();
        }catch(Exception ex){
        }finally {
            Utilita.getRequest().setAttribute("beanStampaInventario",beanStampa);
        }
    }
    
}